#Region " Imports "

Imports System.Data

#End Region

Partial Class Usercontrols_ControlPanel_MemberList
    Inherits UserControlBase

#Region " Enums, Memebers and Properties "

    Private DataPageLocal As New PagedDataSource

    Public Property sortCriteria() As String
        Get
            Return CStr(ViewState("sortCriteria"))
        End Get

        Set(ByVal Value As String)
            ViewState("sortCriteria") = Value
        End Set
    End Property

    Public Property sortDir() As String
        Get
            Return CStr(ViewState("sortDir"))
        End Get

        Set(ByVal Value As String)
            ViewState("sortDir") = Value
        End Set
    End Property

#End Region

#Region " Page Events "

    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        Me.MessageLabel = Me.uxMessagesLabel
    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        SetPageTitle("Member List")

        If Me.Page.IsPostBack = False Then
            LoadPageSize(Me.uxPageSizeDropDownList)
        End If

        ConfigBaseNavCtrls()

        If Me.Page.IsPostBack = False Then
            'Set Default Sort Order and Direction
            Me.sortCriteria = "username"
            Me.sortDir = "asc"

            LoadPageSize(Me.uxPageSizeDropDownList)
            BindDataItems()
        End If

        Me.uxMemberPanel.Visible = ShowControls(SecurityMask.Member, True)
        Me.uxSavePanel.Enabled = GetBooleanFromQueryString("popup")

    End Sub

#End Region

#Region " Save Data "



#End Region

#Region " Load Data "

    Private Sub LoadPage()
        LoadPageSize(Me.uxPageSizeDropDownList)
    End Sub

    Public Overloads Overrides Sub BindDataItems()

        Dim Users As New MembershipUtility
        Dim DS As New DataSet
        Dim DT As New DataTable
        Dim DV As New DataView

        DS = Users.GetAllUsers

        Me.RecordCount = DS.Tables(0).Rows.Count

        DT = DS.Tables(0)

        DV.Table = DT

        DV.Sort = Me.sortCriteria & " " & Me.sortDir

        Me.DataPage.DataSource = DV
        Me.DataPage.AllowPaging = True
        Me.DataPage.PageSize = CType(Me.uxPageSizeDropDownList.SelectedValue.ToString, Integer)
        Me.DataPage.CurrentPageIndex = Me.PageNumber

        CreatePagingLinks()

        With Me.uxResultsGridView
            .DataSource = Me.DataPage
            .PageSize = Me.DataPage.PageSize
            .DataBind()
        End With

    End Sub

#End Region

#Region " Form Controls Events "

    Protected Sub uxSaveButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles uxSaveButton.Click
        SendLinkValue()
    End Sub

    Protected Sub uxResultsGridView_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles uxResultsGridView.Sorting
        'Get the Sort by Value from the Sortexpression field on the column
        If Me.sortCriteria = e.SortExpression Then
            If Me.sortDir = "desc" Then
                Me.sortDir = "asc"
            Else
                Me.sortDir = "desc"
            End If
        End If

        ' Assign the column clicked to the sortCriteria property
        Me.sortCriteria = e.SortExpression

        'Calls the function to rebuild the datagrid view, with the new sort order
        BindDataItems()
    End Sub

#End Region

#Region " Helpers and Methods "

    Private Sub ConfigBaseNavCtrls()

        Me.PagingTopPanel = Me.uxPagingTopPanel
        Me.PagingBottomPanel = Me.uxPagingBottomPanel

        Me.RepeaterTop = Me.uxPagesTopRepeater
        Me.RepeaterBottom = Me.uxPagesBottomRepeater

        Me.NextTopLinkButton = Me.uxTopNextLinkButton
        Me.PreviousTopLinkButton = Me.uxTopPrevLinkButton
        Me.NextBottomLinkButton = Me.uxBottomNextLinkButton
        Me.PreviousBottomLinkButton = Me.uxBottomPrevLinkButton

        Me.DataPage = DataPageLocal
        Me.PageSize = CType(Me.uxPageSizeDropDownList.SelectedValue.ToString, Integer)
        Me.PagesToDisplay = 10

        Me.ItemsPerPageDropDown = Me.uxPageSizeDropDownList
        Me.ItemsPerPageLabel = Me.uxItemsPerPageLabel
        Me.PagerInfoLabel = Me.uxPagerInfoLabel

        AddHandler Me.RepeaterTop.ItemCommand, AddressOf PagingRepeater_ItemCommand
        AddHandler Me.RepeaterBottom.ItemCommand, AddressOf PagingRepeater_ItemCommand

    End Sub

    Private Sub SendLinkValue()

        Dim List As New StringBuilder
        Dim NameList As New StringBuilder
        Dim iI As Integer = 0

        While iI < Me.uxResultsGridView.Rows.Count
            Dim Row As GridViewRow = Me.uxResultsGridView.Rows(iI)
            Dim Name As String = CType(Row.FindControl("uxUserNameHyperLink"), HyperLink).Text.ToString
            Dim Checked As Boolean = CType(Row.FindControl("uxSelectCheckBox"), CheckBox).Checked

            If Checked Then
                NameList.Append(Replace(Name, "\", "\\") & ", ")
            End If

            System.Math.Min(System.Threading.Interlocked.Increment(iI), iI - 1)

        End While

        If NameList.Length > 0 Then
            If Right(NameList.ToString, 2) = ", " Then
                NameList.Length = NameList.Length - 2
            End If
        End If

        ScriptManager.RegisterStartupScript(uxSaveButton, Me.GetType(), "SendPageLinkValues", "window.opener.document.forms['" & GetStringFromQueryString("form") & "'].elements['" & GetStringFromQueryString("control") & "'].value = '" & NameList.ToString & "'; window.close();", True)

    End Sub

#End Region

End Class
